home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // CDiscount (FR) Descriptif et image
-
- (***************************************************
- * Script d'importation pour : *
- * CDiscount , http://www.cdiscount.com *
- * *
- * (c) 2003 Thierry Colier *
- * *
- * A utiliser avec Ant Movie Catalog 3.4.0 *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- ***************************************************)
-
- program CDISCOUNT_FR;
- var
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure RecupereGrandeImage (Adr : String);
- var
- Page : TStringList;
- Line, Value : string;
- LineNr: Integer;
- BeginPos : Integer;
- begin
- HTMLDecode(Adr);
- Page := TStringList.Create;
- Page.Text := GetPage('http://www.cdiscount.com/newmag/mag_dvd/' + Adr);
-
- LineNr := FindLine('<img border="0" src="', Page, 0);
- if LineNR > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos ('<img border="0" src="', Line);
- Delete(Line, 1, BeginPos+20);
- BeginPos := pos ('"></a>', Line);
- value := copy (Line, 1, BeginPos - 1);
- GetPicture(value, False);
- end;
- end;
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Line, Value, Value2 : string;
- LineNr: Integer;
- BeginPos, EndPos, valeur : Integer;
- begin
- // Image
- LineNr := FindLine('zoom_fiche.asp?rep=', Page, 0); // on rΘcupΦre la grande image s'il y en a une
- if LineNR > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos ('zoom_fiche.asp?rep=', Line);
- Delete(Line, 1, BeginPos-1);
- BeginPos := pos (',530,400,', Line);
- value := copy (Line, 1, BeginPos - 10);
- RecupereGrandeImage(Value);
- end
- else
- begin
- LineNr := FindLine('"#000000"><IMG border="0" src="', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos ('"#000000"><IMG border="0" src="', Line);
- Delete(Line, 1, BeginPos + 30);
- BeginPos := pos ('"></TD></TR></TABLE>', Line);
- value := copy (Line, 1, BeginPos - 1);
- GetPicture(value, False);
- end;
- end;
-
- // Description
- LineNr := FindLine('histoire</TD><TD', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('histoire</TD><TD', Line);
- Delete (Line, 1, BeginPos+51);
- EndPos := pos('</TD></TR></TABLE>', Line);
- Value := copy (Line, 1, EndPos);
- value := StringReplace (Value, '<br>', #13#10);
- HTMLRemoveTags(Value);
- HTMLDecode(Value);
- Delete(Line, 1, EndPos);
- SetField(fieldDescription, Value);
- end;
-
- // Titre
- LineNr := FindLine('>Titre</TD><TD', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('>Titre</TD><TD', Line);
- Delete (Line, 1, BeginPos+49);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- Value := AnsiUpFirstLetter(AnsiLowerCase(trim(Value)));
- SetField(fieldTranslatedTitle, Value);
- end;
-
- // Acteurs
- LineNr := FindLine('>Acteurs</TD>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Acteurs</TD>', Line);
- Delete (Line, 1, BeginPos+51);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldActors, Value);
- end;
-
- // RΘalisateur
- LineNr := FindLine('>RΘalisateur</TD>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>RΘalisateur</TD>', Line);
- Delete (Line, 1, BeginPos+55);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldDirector, Value);
- end;
-
- //DurΘe : format 2 h 20 ou 1h55 min ...
- LineNr := FindLine('>DurΘe</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>DurΘe</DIV>', Line);
- Delete (Line, 1, BeginPos+55);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- BeginPos := pos('h', value);
- if (BeginPos > 0) then
- begin
- value := StringReplace (Value, 'min', #32);
- value := StringReplace (Value, 'mn', #32);
- value2 := copy(Value, 1, BeginPos-1);
- valeur := StrToInt(trim(value2), 10)*60;
- value2 := copy(value, BeginPos+1, 10);
- valeur := valeur + StrToInt(trim(value2), 10);
- value := IntToStr(valeur);
- end;
- SetField(fieldLength, Value);
- end;
-
- //Format Audio
- LineNr := FindLine('>Le son</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Le son</DIV>', Line);
- Delete (Line, 1, BeginPos+56);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldAudioFormat, Value);
- end;
-
- //Sous-Titres
- LineNr := FindLine('>Les sous-titres</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Les sous-titres</DIV>', Line);
- Delete (Line, 1, BeginPos+65);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldSubtitles, Value);
- end;
-
- //Zone
- LineNr := FindLine('>Code rΘgional</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Code rΘgional</DIV>', Line);
- Delete (Line, 1, BeginPos+63);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldVideoFormat, Value); //α dΘcortiquer
- end;
-
- //Langues
- LineNr := FindLine('>Choix de langues</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Choix de langues</DIV>', Line);
- Delete (Line, 1, BeginPos+66);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldLanguages, Value);
- end;
-
- //RΘsolution
- LineNr := FindLine('>Format image</DIV>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>Format image</DIV>', Line);
- Delete (Line, 1, BeginPos+62);
- EndPos := pos('</TD></TR>', Line);
- Value := copy(Line, 1, EndPos-1);
- SetField(fieldResolution, Value);
- end;
-
- //Bonus
- LineNr := FindLine('>BONUS</DIV></TD>', Page, 0);
- if LineNr > -1 then
- begin
- Value := 'Bonus :'+#13#10;
- Line := Page.GetString(LineNr);
- BeginPos := Pos('>BONUS</DIV></TD>', Line);
- Delete (Line, 1, BeginPos+55);
- EndPos := pos('</TD></TR>', Line);
- Value := value + copy(Line, 1, EndPos-1);
- value := StringReplace (Value, '<br>', #13#10);
- SetField(fieldComments, Value);
- end;
-
- DisplayResults;
- end;
-
- procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
- var
- Line: string;
- MovieTitle, MovieAddress: string;
- StartPos: Integer;
- EndPos: Integer;
- LastLine: Integer;
-
- begin
- repeat
- Line := Page.GetString(LineNr);
- StartPos := pos('bgcolor="#c50000"><A target="fich_prod"', Line);
- if StartPos > 0 then
- begin
- StartPos := pos('href="http://www.cdiscount.com', Line);
- EndPos := pos('navid=104">', Line);
- MovieAddress := copy(Line, StartPos+6, EndPos-StartPos+3);
- Delete(Line, 1, EndPos+10);
- EndPos := Pos ('</A></TD>', Line);
- MovieTitle := copy(Line, 1, EndPos-1);
- HTMLDecode(MovieAddress);
- HTMLDecode(Movietitle);
- PickTreeAdd(MovieTitle, MovieAddress);
- end;
- LineNr := LineNr + 1;
- until (LineNR > Page.count)
- { if (pos('« Page précédente</a>', Line) > 0) then
- begin
- StartPos := pos('<a href="', Line);
- EndPos := pos('" class="roll">« Page', Line);
- PickTreeAdd('... << RΘsultats prΘcΘdents', 'http://www.alapage.com' + copy (Line, StartPos+9, Endpos-StartPos-9));
- end;
- if (pos('Page suivante »</DIV>', Line) > 0) then
- begin
- StartPos := pos('| <A href="', Line);
- EndPos := pos('" class="roll">Page suivante ', Line);
- PickTreeAdd('RΘsultats suivants >> ...', 'http://www.alapage.com' + copy (Line, StartPos+22, Endpos-StartPos-22));
- end;}
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- Line : String;
- StartPos, EndPos : integer;
- Adr : String;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
-
- PickTreeClear;
- LineNr := 0;
- LineNr := FindLine('rΘsultats correspondent<BR>', Page, LineNr); // trouvΘ plusieurs rΘponses
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos ('"center"><B>', Line);
- EndPos := pos(' rΘsultats correspondent<BR>', Line);
- PickTreeAdd(copy (Line, StartPos+12, EndPos-StartPos-12)+' Films TrouvΘs pour ' + MovieName + ' :', '');
- AddMoviesTitles(Page, LineNr);
- if PickTreeExec(Address) then
- AnalyzePage(Address);
- end
- else
- if (pos('1 rΘsultat correspond', Page.Text) > 0) then
- begin
- LineNr := FindLine('1 rΘsultat correspond', Page, LineNr); // trouvΘ 1 rΘponse
- Line := Page.GetString(LineNr);
- StartPos := pos('bgcolor="#c50000"><A target="fich_prod"', Line);
- if StartPos > 0 then
- begin
- StartPos := pos('href="http://www.cdiscount.com', Line);
- EndPos := pos('navid=104">', Line);
- Adr := copy(Line, StartPos+6, EndPos-StartPos+3);
- HTMLDecode(Adr);
- AnalyzePage(Adr);
- end;
- end
- else
- begin
- if ( pos('fiche/fiche_produit.gif"', Page.Text) > 0) then
- begin
- SetField(fieldURL, Address);
- AnalyzeMoviePage(Page)
- end;
- end;
-
- Page.Free;
-
- end;
-
- begin
- if CheckVersion(3,4,0) then
- begin
- MovieName := GetField(fieldTranslatedTitle);
- if MovieName = '' then
- MovieName := GetField(fieldOriginalTitle);
-
- if Input('CDiscount.com Import', 'Entrer le titre du film :', MovieName) then
- begin
- AnalyzePage('http://www.cdiscount.com/newmag/mag_dvd/list_prod_resultat_sinequa.asp?p_StrSearch='+UrlEncode(MovieName)+'&mscssid=031016203459XQGJXIBLJFBWVWL13346&refer=&REFERER_SURFEUR=&keyid=33203623');
- end;
- end
- else
- ShowMessage('Ce script requiert une version plus rΘcente de Ant Movie Catalog (au moins la version 3.4.0)');
- end.
-